package models

import "time"

// ResponseModel 定义响应模型
// 定义标准响应结构
type ResponseModel struct {
	Code  int    `json:"code"`
	Msg   string `json:"msg,omitempty"`
	Count int    `json:"count"`
	Data  any    `json:"data"`
}

// 分页请求参数结构体
type Pagination struct {
	Page  int `form:"page"`
	Limit int `form:"limit"`
}

type WebUser struct {
	ID           int       `db:"id" json:"id"`
	UserID       string    `db:"user_id" json:"user_id"`       // 账号
	UserName     string    `db:"user_name" json:"user_name"`   // 姓名
	OrgCode      string    `db:"org_code" json:"org_code"`     //组织编码
	OrgName      string    `db:"org_name" json:"org_name"`     // 组织名称
	OrgLevel     int       `db:"org_level" json:"org_level"`   // 组织层级
	UserType     int       `db:"user_type" json:"user_type"`   // 是否管理员 0：否  1：是
	OrgPrefix    string    `db:"org_prefix" json:"org_prefix"` // 组织前缀
	OrgFullName  string    `db:"org_fullname" json:"org_fullname"`
	OrgLiteName  string    `db:"org_litename" json:"org_litename"`
	OrgInuse     int       `db:"org_inuse" json:"org_inuse"` // 0：否  1：是
	CreatedAt    time.Time `db:"created_at" json:"created_at"`
	SessionCount int       `db:"session_count" json:"session_count"`
	IsActive     bool      `db:"is_active" json:"is_active"` // 0：否  1：是
}

// 表三：人工定额条目
type WebProjectLaborItem struct {
	LID         string                         `db:"lid" json:"lid"` // UUID
	NormItem    DesignNorm                     `db:"" json:"norm_item"`
	Quantity    float64                        `db:"quantity" json:"quantity"` //数量
	Remark      string                         `db:"remark" json:"remark"`
	Conversions []WebProjectNormConversionItem `db:"" json:"conversion"`
	Machines    []WebProjectMachineItem        `db:"" json:"machines"`
	Instruments []WebProjectInstrumentItem     `db:"" json:"instruments"`
}

type WebProjectNormConversionItem struct {
	ID             int     `db:"id"      json:"id"`
	NormCode       string  `db:"norm_code" json:"norm_code"`
	Name           string  `db:"name"    json:"name"`
	Content        string  `db:"content" json:"content"`
	RateLabor      float64 `db:"rate_labor" json:"rate_labor"`
	RateMachine    float64 `db:"rate_machine" json:"rate_machine"`
	RateInstrument float64 `db:"rate_instrument" json:"rate_instrument"`
	RateMaterial   float64 `db:"rate_material" json:"rate_material"`
}

// 表三：机械台班条目
type WebProjectMachineItem struct {
	ID       int     `db:"id" json:"id"`
	Code     string  `db:"code" json:"code"`
	Name     string  `db:"name" json:"name"`
	Quantity float64 `db:"quantity" json:"quantity"`
	Remark   string  `db:"remark" json:"remark"`
}

// 表三：仪器仪表条目
type WebProjectInstrumentItem struct {
	ID       int     `db:"id" json:"id"`
	Code     string  `db:"code" json:"code"`
	Name     string  `db:"name" json:"name"`
	Quantity float64 `db:"quantity" json:"quantity"`
	Remark   string  `db:"remark" json:"remark"`
}

// 表四：材料条目
type WebProjectMaterialItem struct {
	ID         int     `db:"id" json:"id"`
	DesignCode string  `db:"design_code" json:"design_code"`
	DesignType int     `db:"design_type" json:"design_type"`
	Code       string  `db:"code" json:"code"`
	Name       string  `db:"name" json:"name"`
	Unit       string  `db:"unit" json:"unit"`
	Quantity   float64 `db:"quantity" json:"quantity"` //数量
	Price      float64 `db:"price" json:"price"`       //单价(不含税，需要计算获取)
	Remark     string  `db:"remark" json:"remark"`
}

// 项目概况（项目设计首页显示）
type WebProjectResume struct {
	ID                int     `db:"id" json:"id"`
	DesignCode        string  `db:"design_code" json:"design_code"`                 //设计方案编码
	Name              string  `db:"name" json:"name"`                               //项目名称
	OrgCode           string  `db:"org_code" json:"org_code"`                       //组织编码
	ProjectOverview   string  `db:"project_overview" json:"project_overview"`       //项目概述
	DesignType        int     `db:"design_type" json:"design_type"`                 //设计类型 （预算/验收/审计）
	Mechanic          float64 `db:"mechanic" json:"mechanic"`                       //技工工日
	General           float64 `db:"general" json:"general"`                         //普工工日
	LaborCost         float64 `db:"labor_cost" json:"labor_cost"`                   //支付人工费
	Machine           float64 `db:"machine" json:"machine"`                         //机械台班金额
	Instrument        float64 `db:"instrument" json:"instrument"`                   //仪器仪表金额
	MaterialTypeCount int     `db:"material_type_count" json:"material_type_count"` //材料类型数量
	MaterialAmount    float64 `db:"material_amount" json:"material_amount"`         //材料金额
	OtherMoney        float64 `db:"other_money" json:"other_money"`                 //其他费用
	FixedAsset        float64 `db:"fixed_asset" json:"fixed_asset"`                 //固定资产结转金额
	Filed             bool    `db:"filed" json:"filed"`                             // 是否已存档
}

type WebProjectList struct {
	ID            int     `db:"id" json:"id"`
	DesignCode    string  `db:"design_code" json:"design_code"`       //设计方案编码
	OrgCode       string  `db:"org_code" json:"org_code"`             //组织编码
	DesignType    int     `db:"design_type" json:"design_type"`       //设计类型 （预算/验收）
	ProjectName   string  `db:"project_name" json:"project_name"`     //项目名称
	ProjectStatus int     `db:"project_status" json:"project_status"` //项目状态
	MoneyLabor    float64 `db:"money_labor" json:"money_labor"`       //人工费
	MoneyMaterial float64 `db:"money_material" json:"money_material"` //材料费
	Filed         bool    `db:"filed" json:"filed"`                   // 是否已存档
}

type WebProjectOtherFee struct {
	ConstructionCost float64        `json:"construction_cost"` // 建筑安装工程费
	RateSafe         float64        `json:"rate_safe"`         // 安全系数
	RateVat          float64        `json:"rate_vat"`          // 增值税系数
	OtherFee         []OtherFeeItem `json:"other_fee"`
}

type MaterialPrice struct {
	MaterialCode string  `db:"material_code" json:"material_code"`
	Price        float64 `db:"price" json:"price"`
}
